const fs = require('fs')
function mineReadFile(path){
    return new Promise((resolve,reject)=>{
        fs.readFile(path,(err,data)=>{
        if (err){
            reject(err)
        }
        resolve(data.toString())
        })
    })
}

//async/await and generator

async function * main(){
    console.log('start')
    yield await mineReadFile('./fs1.txt')
    yield await mineReadFile('./fs2.txt')
    yield await mineReadFile('./fs3.txt')
}

//因为返回的是一个promise对象，所以要自己手动迭代异步可迭代对象
//asyncGenerator Object [AsyncGenerator] {}
// const main1 = async () => {
//     //生成一个可以控制生成器的控制器，叫迭代器/生成器对象
//     const  asyncgenerator = main()
//     //查看迭代器中的
//     console.log('asyncgenerator',asyncgenerator[Symbol.iterator])
//     console.log('asyncgenerator',asyncgenerator.next())
//     let res = {done:false}
//     while(!res.done){
//         res = await asyncgenerator.next()
//         //记住异步迭代器对象是可以迭代的！！！！
//         console.log(res)
//         //{ value: undefined, done: true }
//         if(res.done){continue}
//         console.log(res.value)
//     }
// }

// main1()
//方法二使用for await of
// const main2 = async () => {
//     const asyncgenerator = main()
//     for await (const item of asyncgenerator){
//         console.log(item)
//     }
// }
//  main2()